import axios from 'axios'
import { message } from 'ant-design-vue'
export async function downFileCommon(url, data, type, token, filename, progress = () => { }, num) {
  axios({
    method: type,
    url,
    data,
    responseType: 'blob',
    headers: {
      // 身份验证，如果接口不需要，则传null
      Authorization: token,
    },
    onDownloadProgress: (evt) => {
      // console.log("progressEvent===", evt);
      // 对原生进度事件的处理
      // 回调函数
      progress(evt, num)
    }
  })
    .then((res) => {
      // let type = res.headers['content-type'] //请求头中文件类型
      let Content = res.headers["Content-Disposition"] || res.headers["content-disposition"];
      let name = Content.split(";")[1].split("=")[1]; //请求头中文件名
      const blob = new Blob([res.data])
      if ('download' in document.createElement('a')) {
        // 非IE下载
        const elink = document.createElement('a')
        // 自定义文件名
        // elink.download = filename
        // 原文件名称
        elink.download = name;
        elink.style.display = 'none'
        elink.href = URL.createObjectURL(blob)
        document.body.appendChild(elink)
        elink.click()
        URL.revokeObjectURL(elink.href) // 释放URL 对象
        document.body.removeChild(elink)
        // console.log('下载第二步')
      } else {
        // IE10+下载
        navigator.msSaveBlob(blob, filename)
      }
    })
    .catch((err) => {
      message.error('下载失败')
      console.log('下载错误', err)
    })
}
